//
//  WelcomViewController.swift
//  Weibo
//
//  Created by 伍银荣 on 2022/2/22.
//  Copyright © 2022 com.WYR. All rights reserved.
//

import UIKit
import SnapKit

class WelcomViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //直接使用背景图像作为根视图,不用关心图像的缩放问题
        view = backImageView
        setupUI()
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        //重新设置更新 iconView 的约束(只需要设置改变的约束)
        //1.更改约束 -> 改变位置
        // snp_updateConstraints 更新已经设置过的约束
        // multipliedBy 属性是只读属性,创建之后,不允许修改,所以改用了 offset 属性
        
        /**
         使用自动布局开发,有一个原则:
         - 所有'使用约束'设置位置的控件,不要再设置 'frame'
         
         * 原因: 自动布局系统会根据设置的约束,自动计算控件的 'frame'
         * 在 layoutSubViews 函数中设置 frame
         * 如果程序员主动修改 frame, 会引起系统自动布局计算错误
         
         - 工作原理: 当有一个运行循环启动,自动布局系统会 '收集'所有的约束变化
         - 在运行循环结束前,调用 layoutSubViews 函数 '统一' 设置 frame
         - 如果希望某些约束提前更新, 使用 'layoutIfNeeded' 函数让自动布局系统,提前更新当前收集到的约束变化
         
         */
        iconView.snp_updateConstraints { (make) in
         make.bottom.equalTo(view.snp_bottom).offset(-view.bounds.height + 200)
        }
        //2.动画
        self.welcomeLabel.alpha = 0
        UIView.animate(withDuration: 1.2, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 10, options: [], animations: {
            //修改所有 '可动画'属性 - 自动布局的动画
            self.view.layoutIfNeeded()
        }) { (_) in
            UIView.animate(withDuration: 0.8, animations: {
                self.welcomeLabel.alpha = 1
            }, completion: { (_) in
                print("OK")
            })
        }
        
    }
    
    //MARK: - 懒加载
    /// 背景图像
    private lazy var backImageView: UIImageView = UIImageView(imageName: "newFeature_cell_4")
    
    /// 头像 iconView
    private lazy var iconView: UIImageView = {
       let iv = UIImageView(imageName: "iconViewImage")
        iv.layer.cornerRadius = 45
        iv.layer.masksToBounds = true
        return iv
    }()
    
    /// 欢迎标签
    //从便利构造函数中获取的参数如果默认已经写了这里可以直接删掉,获取写上不同于默认值的都可以
    private lazy var welcomeLabel: UILabel = UILabel(title: "欢迎归来", fontSize: 18)

}

//MARK: - 设置界面
extension WelcomViewController {
    private func setupUI() {
        //1.添加控件
        view.addSubview(iconView)
        view.addSubview(welcomeLabel)
        
        //2.自动布局
        iconView.snp_makeConstraints { (make) in
            make.centerX.equalTo(view.snp_centerX)
            make.bottom.equalTo(view.snp_bottom).offset(-200)
            make.width.equalTo(90)
            make.height.equalTo(90)
        }
        
        welcomeLabel.snp_makeConstraints { (make) in
            make.centerX.equalTo(iconView)
            make.top.equalTo(iconView.snp_bottom).offset(20)
          //  make.width.equalTo(view.snp_width)
          //  make.height.equalTo(40)
        }
        
        print(welcomeLabel.frame)
        
    }
}
